package com.liuyz;

import java.util.HashSet;
import java.util.Set;

@SuppressWarnings({"all"})
public class HashSet_ {

    public static void main(String[] args) {
        // 添加元素/添加重复元素
        String s1 = new String("java");
        String s2 = new String("java");
        Set set1 = new HashSet(); // step1
        set1.add(s1); // step2
        set1.add("python"); // step3
        set1.add(s2); // step4
        System.out.println(set1); // [python, java]

        set1.remove("python");

        // 扩容机制
        Set set2 = new HashSet(); // step1
        for (int i = 1; i <= 50; i++) { // step2
            set2.add(i);
        }

        // 定义hashCode完全相同的对象
        class A {
            private int i;

            public A(int i) {
                this.i = i;
            }

            @Override
            public boolean equals(Object obj) {
                return true;
            }

            @Override
            public int hashCode() {
                return 233;
            }
        }

        for (int i = 1; i <= 8; i++) { // step3：让某个节点数组达到8个元素
            set2.add(new A(i));
        }

        for (int i = 1; i <= 8; i++) { // step4：让当前那个节点进行树化
            set2.add(new A(i));
        }
        System.out.println(set2);
    }
}
